In design of communications systems there is generally a compromise between bit error rate (BER) and transmission bit rate. Higher bit rates tend to have higher BERs. A well-known limit on capacity of a communications channel is the Shannon Limit. In practice, where forward error correction (FEC) is used, the Shannon Limit is a theoretical boundary on channel capacity for a given modulation and code rate, where the code rate is the ratio of data bits to total bits transmitted for some amount of time, such as a second. FEC coding adds redundancy to a message by encoding such a message prior to transmission. For FEC, some example error correction codes include Hamming, Bose-Chaudhuri-Hochquenghem (BCH), Reed-Solomon (RS), Viterbi, trellis, etc.
Several of these codes have been standardized in the International Telecommunication Union Telecommunication Standardization Sector (ITU-T) G.975 and G.709. For example, the standardized Reed-Solomon (255, 239) code has a net coding gain (NCG) of 6.2 dB at a 10-15 decoder output bit error rate (BER) with 6.69% redundancy ratio. However, for high-speed (10 Gb/s and beyond) communication systems, more powerful forward error correction (FEC) codes have become necessary in order to achieve greater correction capability to compensate for serious transmission quality degradation than the standard RS(255, 239) code.
More recently, Super-FEC coding schemes have been developed that utilize using a combination of two or more encoding schemes to provide greater BER correction capability and increase throughput. One example combination, specified in ITU-T G.975.1 I.4, implements a concatenation of RS and BCH encoding schemes. Due to its high performance, ITU-T G.975.1 I.4 is expected to be widely utilized in a variety of communication sectors.
G.975.1 I.4 coding consists of a 10-bit RS encoding of 16 data followed by 1-bit BCH coding. Decoding and error correction is performed by performing BCH decoding operations followed by RS decoding operations.
The G.975.1 I.4 encoding process is illustrated in FIG. 1. The data payload (ODU) includes a total of 122,368 bits. These bits are divided into sixteen groups 102 (15 groups of 7650 bits and one group of 7620 bits). The ODU groups are encoded at RS coding block 104 using 15 RS(781,765) and 1 RS(778,762) codes, which are shortened codes of the RS(1023, 1007) code. The RS coding produces 16 RS coded data blocks 106, which include the ODU payload and RS parity data. The ODU payload and RS parity data of the 106 form the first 124,928 bits of the G.975.1 I.4 coded output (OTU) 116.
Following RS coding, the 124,928 OTU bits 106 are partitioned and interleaved at block 108 into 64 groups of 1952 bits (110) for BCH coding. BCH coding produces interleaved BCH parity data 114. The BCH parity bits are de-interleaved at block 108 and the de-interleaved BCH parity bits of the 64 BCH groups are appended to the end of the non-interleaved 124,928 OTU data bits to form a fully encoded OTU frame with a total of 130,560 bits.
Decoding is accomplished by performing BCH decoding operations followed by RS decoding operations. However, because the final OTU frame stores the payload in a non-interleaved format, multiple bits of a BCH group cannot be processed in parallel without first buffering and interleaving the OTU data. As a result, it can be difficult to efficiently decode the BCH encoded OTU data in parallel while achieving a high throughput.
One or more embodiments may address one or more of the above issues.